package com.nuedu.corejava.ch8;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Scanner;

public class TestCheckException {
	public static void main(String[] args) {
		// check exception 和 runtime exception
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入一个被除数");
		int a = scanner.nextInt();
		System.out.println("请输入一个除数");
		int b = scanner.nextInt();

		// java.lang.ArithmeticException 可能发生RuntimeException
		// runtimeException可以不进行异常

		/*
		 * if(b==0) { System.out.println("除数不能为0默认除以1"); b=1; }
		 */
		try {
			int c = a / b;
			System.out.println(c);
		} catch (ArithmeticException e) {// 使用catch捕获异常时，可以捕获特性的异常或该异常的父类异常
			System.out.println("发生了算数运算异常！");
			e.printStackTrace();// 查看内存的出错信息，打印堆栈信息
		}
		// 编写一段代码，读取某个java程序，并把读取的代码显示在控制台
		// 1.文件定位，找文件-文件操作
		File file = new File("D:\\东软学习\\java11workspace\\HelloJava\\src\\HelloJava.java");
		if (file.exists()) {
			// 读内容 - 文件内容操作
			// 内容的读取时按位操作的，8bit ->byte
			// 使用文件流的方式进行读取
			FileInputStream inputStream = null;
			try {
				// 使用异常捕获方法，在main方法中
				inputStream = new FileInputStream(file);// 检查异常，如果不进行处理，则无法通过编译器检查，无法生成class文件
				byte[] buffer = new byte[128];
				int length = inputStream.read(buffer);// read方法进行文件读取，如果文件读完会返回-1
				while (length > 0) {// while循环用于循环次数不确定的情况
					String s = new String(buffer, 0, length);// 把读取的数据转换为字符串
					System.out.print(s);
					length = inputStream.read(buffer);
				}
				System.out.println();// 程序文件读取后，换行
			} catch (FileNotFoundException e) {
				e.printStackTrace();// 在异常处理中，可以通过打印堆栈信息，查询程序错误提示，并进行代码处理（给用户进行操作提示，指引用户进行其他操作）
			} catch (IOException e) {// 一个try代码块中可能发生多个异常，可以使用多个catch块进行异常捕获；
				e.printStackTrace();
			} finally {// finally代码块跟在try块后，用于执行不管是否发生异常都要运行的代码。finally的代码一定给运行
				if (inputStream != null) {
					try {
						inputStream.close();
					} catch (IOException e) {
					}
				}
			}
		}
		System.out.println("main方法执行完毕");
	}
}
